const { createStore } = require("redux")
// createStore是提示过期，但是先理解这个，再学习后面的最新的
// 初始化数据
const defaultState = {
  name: "name",
  age: 1
}

// 创建reducer函数
// @params {state} 原数据值， @params {action} 派发更新的值和对应的函数
function reducer(state = defaultState, action) {
  // console.log('reducer', state, action);
  // return defaultState; // 所以这里应该直接返回state并作判断
  if (action.type === "changeNameAction") {
    // 待会再说这个判断很low的问题
    // state.name = action.name; // 不能这样赋值，这样视图不会更改，因为state的地址没有更改
    state = { ...state, name: action.name } // 正解，创建一个新的地址值逼迫视图刷新
  }

  if (action.type === "changeAgeAction") {
    state = { ...state, age: state.age + action.age }
  }

  // 所以说派发action中action只是一个抽象概念，抽象指向，不是具体数据。
  return state // 这是因为一开始要直接返回的initState
}

// 创建的store, 但是createStore函数内部接受reducer函数，
const store = createStore(reducer)

module.exports = store
